SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porTesisDoctoral] @idInscripcion as integer, @pje as float output , @resultado as integer output AS


set nocount on --para anular el trafico econ el cliente (no salen los print)


/*este procedimiento calcula el puntaje para el item: Tesis Doctoral, recibe como parámetro el identificador de la inscripción para una determinada convocatoria
y devuelve en @pje el puntaje correspondiente para este item*/

declare  @idAgente as int,@CargoGenerico as int,@AsignaturaGenerica as int, @idTipoConvocatoria as int ,@fechaLimite as datetime
declare @topeTesisDoctoral as float, @sum as float
DECLARE @Error INT

BEGIN TRANSACTION
             SET @ERROR=0

select @topeTesisDoctoral =(select isnull( valor,9999)  from tb_topetiposantecedentes where rubro=23 and TipoAntecedente =92 )-- leo el  tope por Masters

/*leo los datos de la inscripción: identificador del agente, cargo , asignatura tipo de convocatoria para la que se inscribe (ingreso, interinatos etc), y la fecha limite hasta la cual serán valorados
los antecedentes */

select  @idAgente=i.Agente,@cargoGenerico = i.CargoGenerico,@AsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

--if  @idTipoConvocatoria  in (1,2,4,5,9)  --    TipoConvocatoria = 1 ingreso,interinatos y suplencias
	--begin
/*versión anterior
		select  
		  @pje=isnull (sum(PuntajeParaIncumbencias),0)
		from tb_antecedentes a 
		join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
		where a.rubro=23  and agente=@idAgente --and a.Fecha<@FechaLimite
*/
-- modificacion para 2005

	declare c cursor FORWARD_ONLY FOR
	select 
		  isnull (sum(PuntajeParaIncumbencias),0)  puntaje 
	from tb_antecedentes a 
		join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
		join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=a.GrupoIncumbencias
--		join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
		join tb_incumbencias h on G.idGrupoINCUMBENCIA=h.grupoIncumbencia
    	         where a.rubro=23  and agente=@idagente and h.CargoGenerico=@Cargogenerico and h.AsignaturaGenerica=@AsignaturaGenerica and a.FechaPresentacion <= @FechaLimite --sumo todos los artículos que tiene el agente
	union
	select  
	  	isnull (sum(PuntajeParaIncumbencias),0) puntaje
	from tb_antecedentes a 
		join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
                         where a.rubro=23  and agente=@idagente and a.grupoincumbencias =99 and a.FechaPresentacion <= @FechaLimite --sumo todos los artículos que tiene el agente
		SET @Error = @@ERROR 
		IF @Error <> 0 GOTO Salir

	open c
		fetch next from c into @sum
		set @pje=0

		while @@FETCH_STATUS = 0
		begin
			set @pje=@pje+@sum
			fetch next from c into @sum
		end

		close c
		deallocate c

		if  @pje > @topeTesisDoctoral set @pje = @topeTesisDoctoral 
	--end
/*else
	begin
		insert tb_registroeventos (fecha,idusuario1,severidad,causa,idusuario2,descripcion) values (getdate(),isnull(user_id(),1),0,'puntajes por Tesis Doctoral',isnull(user_id(),1),'No se valoran Tesis doctorales para el tipo de convocatoria '+str(@idtipoconvocatoria))
		set @resultado =1
	end */


print @pje

Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porTesisDoctoral] TO [Juntas]
GO
